#ifndef __DIRECTIONAL_LIGHT_H__
#define __DIRECTIONAL_LIGHT_H__

#include "Light.h"
#include "Vector3.h"

class DirectionalLight::public Light
{
public:
	DirectionalLight();
	virtual Type get_type() const;
	
	Vector3& direction();
	
	virtual void compute_diffuse( const Matrix3& world_rotate,
		const Vector3& world_translate, Real world_scale,
		const Vector3& vertex, const Vector3* normal,
		unsigned int num_lights, const bool* visible,
		Color* diffuse );

	virtual void compute_specular( const Matrix3& world_rotate,
		const Vector3& world_translate, Real world_scale,
		const Vector3* vertex, const Vector3* normal,
		unsigned int num_lights, const bool* visible,
		const Vector3& camera_model_location, Color* specular );

protected:
	Vector3 m_direction;
};

#include "DirectionalLight.inl"

#endif
